//6个字段分别表示：
//       秒钟：0-59
//       分钟：0-59
//       小时：1-23
//       日期：1-31
//       月份：1-12
//       星期：0-6（0 表示周日）

//还可以用一些特殊符号：
//       *： 表示任何时刻
//       ,：　表示分割，如第三段里：2,4，表示 2 点和 4 点执行
//　　    －：表示一个段，如第三端里： 1-5，就表示 1 到 5 点
//       /n : 表示每个n的单位执行一次，如第三段里，*/1, 就表示每隔 1 个小时执行一次命令。也可以写成1-23/1.
/////////////////////////////////////////////////////////
//  0/30 * * * * *                        每 30 秒 执行
//  0 43 21 * * *                         21:43 执行
//  0 15 05 * * * 　　                     05:15 执行
//  0 0 17 * * *                          17:00 执行
//  0 0 17 * * 1                          每周一的 17:00 执行
//  0 0,10 17 * * 0,2,3                   每周日,周二,周三的 17:00和 17:10 执行
//  0 0-10 17 1 * *                       毎月1日从 17:00 到 7:10 毎隔 1 分钟 执行
//  0 0 0 1,15 * 1                        毎月1日和 15 日和 一日的 0:00 执行
//  0 42 4 1 * * 　 　                     毎月1日的 4:42 分 执行
//  0 0 21 * * 1-6　　                     周一到周六 21:00 执行
//  0 0,10,20,30,40,50 * * * *　           每隔 10 分 执行
//  0 */10 * * * * 　　　　　　              每隔 10 分 执行
//  0 * 1 * * *　　　　　　　　               从 1:0 到 1:59 每隔 1 分钟 执行
//  0 0 1 * * *　　　　　　　　               1:00 执行
//  0 0 */1 * * *　　　　　　　               毎时 0 分 每隔 1 小时 执行
//  0 0 * * * *　　　　　　　　               毎时 0 分 每隔 1 小时 执行
//  0 2 8-20/3 * * *　　　　　　             8:02,11:02,14:02,17:02,20:02 执行
//  0 30 5 1,15 * *　　　　　　              1 日 和 15 日的 5:30 执行

package time_task

import (
	. "chess_platform/internal/common"
	"chess_platform/internal/task"
	"fmt"
)

func init() {
	//不是pc端后台不运行, executeTask保证只有指定的服务器才执行此任务
	if PlatformConf.Type == PlatformPc && PlatformConf.ExecuteTask == 1 {
		LogPc.Debug(fmt.Sprintf("------------------PC管理后台系统,启动定时任务,type:%v,executeTask:%v----------------------",
			PlatformConf.Type, PlatformConf.ExecuteTask))

		LogPc.Debug("------------------启动定时任务开始------------------------------")

		//每天凌晨04:01创建表
		task.AddTask("dayTrans", "0 01 04 * * *",
			CreateTomorrowTable(DBChessLog, TableDayTrans, TableDayTrans)).Run()
		//每天凌晨04:02创建表
		task.AddTask("dayGame", "0 02 04 * * *",
			CreateTomorrowTable(DBChessLog, TableDayGame, TableDayGame)).Run()

		//每个月生成亲友圈数据统计表,毎月1日的 1:02 分 执行
		//task.AddTask("dayClub", "0 02 1 1 * *",
		//	CreateNextMonthTable(DBChessLog, TableDayClub, TableDayClub)).Run()
		//每个月系统帐号流水数据统计表,毎月1日的 1:02 分 执行
		//task.AddTask("system_user_tran", "0 02 1 1 * *",
		//	CreateNextMonthTable(DBChessLog, TableSystemUserTran, TableSystemUserTran)).Run()

		//每天凌晨04:11清理过期房间列表,过期邮件
		task.AddTask("clearDueRoom", "0 11 04 * * *", ClearDueRoom)

		//每个星期一凌晨04:21清理网络延迟数据
		task.AddTask("clearNetDelay", "0 21 04 * * 1", ClearNetDelay)

		//每天凌晨04:11清理15天前的错误日志
		task.AddTask("ClearClientError", "0 11 04 * * *", ClearClientError)
		task.AddTask("ClearSubmitLog", "0 11 04 * * *", ClearSubmitLog)

		//每天晚上23:59:40清理亲友圈的数据
		task.AddTask("clearClubData", "40 59 23 * * *", ClearClubData)

		//每天晚上23:59把系统帐号system_user里的day_cost置为0
		task.AddTask("ClearSystemUserDayCost", "0 59 23 * * *", ClearSystemUserDayCost)
		//每周星期日晚上23:59把系统帐号system_user里的week_cost置为0
		task.AddTask("ClearSystemUserWeekCost", "0 59 23 * * 0", ClearSystemUserWeekCost)
		//每月第一天凌晨00:03把系统帐号system_user里的week_cost置为0
		task.AddTask("ClearSystemUserMonthCost", "0 03 0 1 * *", ClearSystemUserMonthCost)

		//每月1号凌晨03:40统计亲友圈数据存到redis里
		task.AddTask("PutClubToRedisCache", "0 40 03 1 * *", PutClubToRedisCache)
		//每天凌晨05:30统计代理的数据

		//每天晚上23:50统计玩家日活,留存率之类的,只能当天统计当天的,过了当天数据就没了
		task.AddTask("statPlayerInfo", "0 50 23 * * *", StatPlayerInfo)
		//每5分钟统计一次在线在玩用户数
		task.AddTask("userOnlineCount", "0 */5 * * * *", UserOnlineCount)
		task.AddTask("RegisterUserCount", "0 */30 * * * *", RegisterUserCount)

		//每天凌晨00:01统计代理的数据
		task.AddTask("stat", "0 01 00 * * *", Stat)
		LogPc.Debug("------------------启动定时任务结束------------------------------")
	}

	LogPc.Debug("------------------启动服务器上报数据定时任务开始------------------------------")
	//每2分钟上报一次
	task.AddTask("ReportPlatform", "0 */2 * * * *", ReportPlatform)
	//每30秒上报写一次日志
	//task.AddTask("LogURL", "0/30 * * * * *", LogURL)
	//每天23:58分清理重启次数
	task.AddTask("ClearReportPlatform", "0 58 23 * * *", ClearReportPlatform)
	LogPc.Debug("------------------启动服务器上报数据定时任务结束------------------------------")

	task.StartTask()
}
